
Nombre:
UltraEdit 32
Versión:
7.00
Editor:
UltraEdit
Víctima:
UEDIT32.EXE
Herramientas:
FileMon
HIEW
W32Dasm
Cerebro
Cracker:
LW2000
Tutorial:
número 51
Renuncia: Este tutorial tiene una finalidad únicamente
educativa. No asumo ninguna responsabilidad por el mal uso de éste material.
1.
¡Comenzamos! Vamos a la pantalla de registro
e introducimos ‘LW2000 [CiA]’ como Name y ‘1230099’ como Code.
2.
¡Booom! ¡No hay ningún mensaje! ¡UltraEdit
deja de ejecutarse!
3.
¿Qué significa esto? UltraEdit guarda
los detalles en un fichero y lo comprueba al arrancar.
4.
Bien, vamos a echar un vistazo más atento
a éste ‘fichero’. ¡Vamos a espiar a UltraEdit con FileMon! FileMon habla de
un fichero demoninado ‘UEDIT32.REG’ … ¡Hmmm! ¡Parece que hemos encontrado
un buen punto de inicio para crackear UltraEdit!
5.
Cargamos ‘UEDIT32.EXE’ en W32Dasm y buscamos
en las ‘String Data References’ por ‘REG’. Bien, nos encontramos algunas apariciones.
Pero después de echar un vistazo más atento resulta claro que ésta es la parte
que nos interesa:
:0043D61E 6840444E00 push 004E4440
:0043D623 B90CE54E00 mov ecx, 004EE50C
:0043D628 E873230500 call 0048F9A0
:0043D62D 83F8FF cmp eax, FFFFFFFF
:0043D630 0F841D010000 je 0043D753
:0043D636 FFB78C000000 push dword ptr
[edi+0000008C]
:0043D63C 8D4D10 lea ecx, dword ptr [ebp+10]
:0043D63F E88DA20500 call 004978D1
:0043D644 8B4510 mov eax, dword ptr [ebp+10]
:0043D647 8D4D10 lea ecx, dword ptr [ebp+10]
:0043D64A C645FC02 mov [ebp-04], 02
:0043D64E 8B40F8 mov eax, dword ptr [eax-08]
:0043D651 83C0FD add eax, FFFFFFFD
:0043D654 50 push eax
:0043D655 8D45E8 lea eax, dword ptr [ebp-18]
:0043D658 50 push eax
:0043D659 E8A8220500 call 0048F906
* Possible StringData Ref from Data Obj
->"REG"
6.
Ahora nos desplazamos un poco hacia arriba
hasta ver esto:
* Reference To: USER32.CreateWindowExA,
Ord:0059h
|
:0043D5E2 FF1530074C00 Call dword ptr
[004C0730]
:0043D5E8 A3C8FF4E00 mov dword ptr [004EFFC8], eax
:0043D5ED 8D8796020000 lea eax, dword ptr [edi+00000296]
:0043D5F3 885810 mov byte ptr [eax+10], bl
:0043D5F6 FF3500E54E00 push dword ptr
[004EE500]
:0043D5FC 6A01 push 00000001
:0043D5FE 50 push eax
:0043D5FF FF75F0 push [ebp-10]
:0043D602 E8BB11FDFF call 0040E7C2 >Rutina de comprobación
:0043D607 83C410 add esp, 00000010
:0043D60A 85C0 test eax, eax <--
TEST
:0043D60C 0F8489010000 je 0043D79B <--
BAD BOY!
:0043D612 391D1C004F00 cmp dword ptr
[004F001C], ebx
:0043D618 0F857D010000 jne 0043D79B
* Possible StringData Ref from Data Obj
->"Extension License"
7.
La función ‘createWindowEx’ crea una
ventana popup, overlapped o hija, con un estilo extendido. Si la función tiene
éxito, el valor de retorno es el handle de la nueva ventana, en caso contrario
es cero. Vemos que en la posición ‘0043D602’ hay un ‘CALL’. Dentro de éste
‘CALL’ nuestro Serial falso se compara con el correcto. Si son idénticos entonces
‘EAX = 1’ en caso contrario ‘EAX = 0’.
8.
Así que, ¿qué podemos hacer? Vamos a
cambiar el call, de modo tal que el valor de retorno sea siempre ‘1’. Vamos
dentro del ‘CALL’ y anotamos el offset.
9.
Abrimos HIEW, vamos al offset. Entramos
en el modo ‘DeCode’ y pulsamos F3 para editar, y F2 para introducir comandos
Assembler. Ahora escribimos:
mov eax,1 [pulsamos ‘Intro’]
ret [pulsamos ‘Intro’]
[press Esc]
10.
¿Qué es lo que hace esto? Esto pone el valor ‘1’ en el registro ‘EAX’
y retorna del ‘CALL’.
11.
¡Bien! ¡Probemos nuestra versión libre de ‘bugs’!
¡Enhorabuena! ¡Ya es usted un usuario registrado!
¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme
un email a LW2000@gmx.net.
o vaya a http://www.LW2000.cjb.net
Gracia a tKC por sus tutoriales. Empecé leyendo su
primer tutorial y todavía sigo leyéndolos.
Traducción de: MeGaBiTe